古いrails Frontend業務システムにFigmaで作ったVariables製デザイントークンを導入する
前提知識
該当システムの性質
レンダリング
基本的には、React製のDOMを重ねている感じ。 verion: rails 6系の古いアプリケーション
Motivation
該当システムは、複数のデザインが入り混じっている
デザイン、実装共にややこしい。
イメージ
app
base
古くてあまりメンテされていない。
featureCat
baseをimportして新規にデザインを実装
featureDog
baseをimportして新規にデザインを実装
扱いにくくて、後日、featureCatをimportして上書き
※3つに、project class、component class、utility classがある。各所で利用していたりもする。
簡単なデザイン実装をnot Frontendが実装出来るようにしたい。
BEがFEまでまとめて実装することがあったり、デザイナーすら入っていないこともあるが、その際にデザイン、実装を0ベースで作るのしんどい。
FEでもProject classやComponent classがややこしいと感じている。
FLOCSSで実装されているのだけど、業務システムである以上、命名や機能が複雑化しやすい。 結果的に似たようなProject classが乱立している。
解決方針
該当システムは、複数のデザインが入り混じっている
システム制約上、
code: c-modal.scss
.c-modal {
// componentのtokenは、custom prop内で定義を想定
--modal-max-width: 550px;
--modal-spacing-x: var(--primitive-token-spacing-3);
--modal-spacing-y: var(--primitive-token-spacing-16);
position: fixed;
top: var(--modal-spacing-y);
bottom: var(--modal-spacing-y);
width: 100%;
max-width: var(--modal-max-width);
...
}
簡単なデザイン実装をnot Frontendが実装出来るようにしたい。その際にデザイン、実装を0ベースで作るのしんどい。
code: UploadModal.scss
...
// 簡単なスタイルであれば、utilityでで書いてしまうことを想定。
<div className="u-flex u-flex-column u-gap-y-4 u-px-6">
{}
</div>
具体想定ユースケース
FEが担当するような複雑UI
BEが担当するような簡単なUI
FEは、どこかのコピペで出来ることを想定
具体実装
注意事項やポイント
すべての命名をkebab-caseで作成
jsやcssを挟む際に処理で止まる場合があるから。
&といった特殊文字も命名に利用しない。
2. Figmaのプラグイン hogeで、デザイントークンのjsonを出力